/**
 * 
 * 可通过 $page 获取或修改当前页面的 变量 状态 handler lifecycle 等信息
 * 可通过 app 获取或修改全局应用的 变量 状态 等信息
 * 具体可以console.info 在编辑器Console面板查看更多信息
 * 注意：该方法仅在所属的页面有效
 * 如果需要 async-await，请修改成 export default async function() {}
 * 帮助文档 https://cloud.tencent.com/document/product/1301/57912
 **/

/**
 * @param {Object} event - 事件对象
 * @param {string} event.type - 事件名
 * @param {any} event.detail - 事件携带自定义数据
 *
 * @param {Object} data
 * @param {any} data.target - 获取事件传参的数据
 **/
const getVerification = async ({ phone, target }) => {
  const auth = (await $w.cloud.getCloudInstance()).authInstance;
  try {
    const data = await auth.getVerification({
      target,
      phone_number: `+86 ${phone}`,
    });
    return data;
  } catch (error) {
    console.log('=======> getVerification err', error);
    return error;
  }
};

export default async function(params) {
  console.log('========event', params.data)
  const { phone } = params.data?.target || {};
  const target = 'ANY';

  const data = await getVerification({
    target,
    phone,
  });

  if (data?.error_code) {
    $w.page.dataset.state.alertInfo = { message: $w.page.handler.parseSmsError(data, target, true), type: 'error' };
    return;
  }

  $w.page.dataset.state.alertInfo = { message: '我们已经向您发送了一条验证码，请查收', type: 'info' };
  $w.page.handler.intervalSmsCodeSender(60);
  $w.page.dataset.state.verificationCodeInfo = data;
  $w.page.handler.setPhoneStorage({ ...data, id: data.verification_id, usedCount: 0 });
}